// 提供状态

import { setToken, getToken, removeToken } from '@/utils/auth'
import { login, getUserInfo } from '@/api/user'
const state = {
  token: getToken(), // 用户token
  userInfo: {}
}
// 提供同步操作mutation
const mutations = {
  setUserToken(state, newToken) {
    // 将token存储到vuex中
    state.token = newToken
    // 将token做持久化储存
    setToken(newToken)
  },
  setUserInfo(state, userInfo) {
    state.userInfo = userInfo
  },
  // 清除token的方法
  removeUserToken(state) {
    state.token = null
    removeToken()
  }
}
// 提供异步操作action
const actions = {
  // 登出操作
  logout(context, payload) {
    // 清理token
    context.commit('removeUserToken')
    // 清理用户基本信息
    context.commit('setUserInfo', {})
  },

  /**
   *
   * @param {*} context
   * @param {*obj} loginForm
   */
  async login(context, loginForm) {
    // console.log(loginForm)
    // 发送登录请求
    const token = await login(loginForm)
    console.log(token)
    // 发送登陆请求
    // 如果登陆成功，拿到token
    // const token = 'qweasdzxc'
    context.commit('setUserToken', token)
  },
  async getUserInfo(context, payload) {
    // 发送获取用户的基本信息的求情
    const userInfo = await getUserInfo()
    console.log(userInfo)
    // 将用户基本信息储存到Vuex中
    context.commit('setUserInfo', userInfo)
  }
}

export default {
  namespaced: true,
  // 提供状态
  state,
  // 提供同步操作mutation
  mutations,
  // 提供异步操作action
  actions
}
